What is cache-base?
The cache-base npm package is a simple and fast key-value store for caching data. It provides an easy-to-use API for setting, getting, and managing cached data with support for namespaces and custom storage engines.
What are cache-base's main functionalities?
Setting and getting values
This feature allows users to store and retrieve data by key. The example shows how to set an object with user details and then retrieve it.
{
const Cache = require('cache-base');
const cache = new Cache();
cache.set('user', { name: 'John Doe', age: 30 });
console.log(cache.get('user'));
}
Using namespaces
Namespaces allow for organizing data under a specific context, avoiding key collisions and making data management clearer. The example demonstrates setting and getting data under a 'users' namespace.
{
const Cache = require('cache-base');
const usersCache = new Cache('users');
usersCache.set('user1', { name: 'John Doe', age: 30 });
console.log(usersCache.get('user1'));
}
Custom storage engines
Cache-base supports custom storage engines, allowing users to define how data is stored and retrieved. This example uses JavaScript's Map object as a custom storage engine.
{
const Cache = require('cache-base');
const customStore = new Map();
const cache = new Cache({ store: customStore });
cache.set('key', 'value');
console.log(cache.get('key'));
}
Other packages similar to cache-base
node-cache
node-cache is another simple caching solution for Node.js. It offers similar functionalities to cache-base but also includes TTL (time to live) support for automatic cache invalidation, which cache-base does not provide by default.
lru-cache
lru-cache is a cache object that deletes the least-recently-used items. It is similar to cache-base in providing a key-value cache but is specifically optimized for scenarios where you need to limit memory usage and manage entries based on usage frequency.
cache-base
Basic object cache with get
, set
, del
, and has
methods for node.js/javascript projects.
Install
Install with npm:
$ npm install --save cache-base
Usage
var Cache = require('cache-base');
var app = new Cache();
app.set('a', 'b');
app.set('c.d', 'e');
app.get('a');
app.get('c');
console.log(app.cache);
Inherit
var util = require('util');
var Cache = require('cache-base');
function MyApp() {
Cache.call(this);
}
util.inherits(MyApp, Cache);
var app = new MyApp();
app.set('a', 'b');
app.get('a');
Namespace
Define a custom property for storing values.
var Cache = require('cache-base').namespace('data');
var app = new Cache();
app.set('a', 'b');
console.log(app.data);
API
Create a Cache
constructor that when instantiated will store values on the given prop
.
Params
prop
{String}: The property name to use for storing values.returns
{Function}: Returns a custom Cache
constructor
Example
var Cache = require('cache-base').namespace('data');
var cache = new Cache();
cache.set('foo', 'bar');
Create a new Cache
. Internally the Cache
constructor is created using the namespace
function, with cache
defined as the storage object.
Params
cache
{Object}: Optionally pass an object to initialize with.
Example
var app = new Cache();
Assign value
to key
. Also emits set
with the key and value.
Params
key
{String}value
{any}returns
{Object}: Returns the instance for chaining.
Events
emits
: set
with key
and value
as arguments.
Example
app.on('set', function(key, val) {
});
app.set(key, value);
app.set({name: 'Halle'});
app.set([{foo: 'bar'}, {baz: 'quux'}]);
console.log(app);
Union array
to key
. Also emits set
with the key and value.
Params
key
{String}value
{any}returns
{Object}: Returns the instance for chaining.
Example
app.union('a.b', ['foo']);
app.union('a.b', ['bar']);
console.log(app.get('a'));
Return the value of key
. Dot notation may be used to get nested property values.
Params
key
{String}: The name of the property to get. Dot-notation may be used.returns
{any}: Returns the value of key
Events
emits
: get
with key
and value
as arguments.
Example
app.set('a.b.c', 'd');
app.get('a.b');
app.get(['a', 'b']);
Return true if app has a stored value for key
, false only if value is undefined
.
Params
key
{String}returns
{Boolean}
Events
emits
: has
with key
and true or false as arguments.
Example
app.set('foo', 'bar');
app.has('foo');
Delete one or more properties from the instance.
Params
key
{String|Array}: Property name or array of property names.returns
{Object}: Returns the instance for chaining.
Events
emits
: del
with the key
as the only argument.
Example
app.del();
app.del('foo');
app.del(['foo', 'bar']);
Reset the entire cache to an empty object.
Example
app.clear();
Visit method
over the properties in the given object, or map
visit over the object-elements in an array.
Params
method
{String}: The name of the base
method to call.val
{Object|Array}: The object or array to iterate over.returns
{Object}: Returns the instance for chaining.
About
Related projects
- base-methods: base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… more | homepage
- get-value: Use property paths (
a.b.c
) to get a nested value from an object. | homepage - has-value: Returns true if a value exists, false if empty. Works with deeply nested values using… more | homepage
- option-cache: Simple API for managing options in JavaScript applications. | homepage
- set-value: Create nested values and any intermediaries using dot notation (
'a.b.c'
) paths. | homepage - unset-value: Delete nested properties from an object using dot notation. | homepage
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Contributors
Building docs
(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)
To generate the readme, run the following command:
$ npm install -g verbose/verb
Running tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
$ npm install && npm test
Author
Jon Schlinkert
License
Copyright © 2017, Jon Schlinkert.
Released under the MIT License.
This file was generated by verb-generate-readme, v0.4.2, on February 25, 2017.